// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract myToken is ERC20 { address public founder; uint256 public constant mult = 1000000000000000000; constructor() ERC20("Tokens For Dummies", "TFD"){ founder = msg.sender; _mint(founder, 100*mult); } receive() external payable { _mint(msg.sender, msg.value); } function withdraw(address payable _to, uint256 amount) public { require(msg.sender == founder, "not authorized to withdraw"); require(address(this).balance >= amount, "insufficient funds"); (bool success, ) = _to.call{value: amount}(""); require(success, "transfer failed"); } function mint(address to, uint256 quantity) public { require(msg.sender == founder, "not authorized to mint TFD"); _mint(to, quantity*mult); } }